package main

import (
	"fmt"
	"io"
	"os"
)

func main() {

	//与文件建立连接  返回的是指针对象 可以对文件进行读写操作  Open就是仅仅是打开
	file, err := os.Open("./lessonGoIO/a.txt")
	if err != nil {
		fmt.Println(err)
		return
	}
	fmt.Println(file.Name())
	//关闭连接
	defer file.Close()

	//对文件进行读操作
	//创建切片 大小为2 容量为1024
	s1 := make([]byte, 2, 1024)
	n, err4 := file.Read(s1) //此时n是读到的个数（这个个数就是[]byte 里面设置的大小）
	fmt.Println(n)

	//将文件中的内容用字符串并以切片的大小 2展示出来
	fmt.Println(string(s1))
	//可以一直打印  当超过文件中字符的大小时就会报错  此时读到了文件末尾 err = io.EOF
	//如果读到的n > 0 时err就位nil （意思就是读到了数据 即使没有装满整个切片）
	//没有读到内容 就返回EOF  （说明没有数据可以读了）
	fmt.Println(err4)
	//for循环有问题
	for {
		n, err := file.Read(s1)
		if err == io.EOF || n == 0 {
			fmt.Println("文件读写完毕")
			break
		}
		fmt.Println(string(s1))
	}
	fmt.Println(err4)
	//OpenFile  （文件名，打开方式，文件权限）
	//如果用上面的打开方式不能可读可写 我们就要设置打开方式
	/*file2, err2 := os.OpenFile("./lessonGoIO/a.txt", os.O_RDONLY|os.O_WRONLY, os.ModePerm)
	if err2 != nil {
		fmt.Println(err2)
		return
	}
	fmt.Println(file2.Name())
	defer file.Close()*/

}
